Unless otherwise indicated herein, the description provided in this section is not itself prior art to the claims and is not admitted to be prior art by inclusion in this section.
In order for two wireless devices to engage in useful communication with each other over a wireless channel, each device could implement a protocol stack defining a sequence of logical processing layers. Under the Internet protocol suite, for instance, the protocol stack may range, top down, from an application layer to a transport layer, to a network layer, and to a data-link layer, to a physical layer. Each device may be configured to process data sequentially through the layers of such a stack, with the transmitting device processing data downward through the stack and taking specific action at each layer (e.g., adding a layer-specific header), and with the receiving device then processing data upward through the stack and taking layer-specific action at each layer (e.g., stripping the headers added by the transmitting device).
With this arrangement, the devices can communicate with each other at corresponding layers of their respective protocol stacks, with each lower layer of their protocol stacks operating on the communication along the way. In particular, a layer of one device could generate a communication to the corresponding layer of the other device, and the communication could pass down through the protocol stack of the first device, over the physical wireless channel, and up through the protocol stack of the other device to the destination corresponding layer.
For example, an application-layer program running on a first device could communicate with a corresponding application-layer program running on a second device. At the first device, for instance, the application layer could pass program data down to a transport-layer, the transport layer could add a transport-layer header (e.g., specifying originating and destination transport port numbers) and pass the result down to the network layer, the network layer could add a network-layer header (e.g., specifying originating and destination Internet Protocol (IP) addresses) and pass the result down to the data-link layer, the data-link layer could add a data-link-layer header (e.g. specifying originating and destination Media Access Control (MAC) addresses) and pass the result down to the physical layer, and the physical layer could process the result for physical transmission on the shared wireless channel and engage in physical wireless-channel transmission to the second device.
At the second device, the physical layer could then receive and process the physical wireless-channel transmission and pass the result up to the data-link layer, the data-link layer could strip the added data-link-layer header and pass the result up to the network layer, the network layer could strip the added network-layer header and pass the result up to the transport layer, and the transport layer could strip the added transport-layer header and pass the data up to the appropriate program at the application layer for handling.
As another example, the transport layer of a first device could communicate with a corresponding transport layer of a second device, in order to set up a transport layer “socket” between the two devices or to carry out other transport layer functions. At the first device, for instance, the transport layer could pass a transport-layer data message to the network layer, the network layer could add a network-layer header and pass the result to the data-link layer, the data-link layer could then add a data-link-layer header and pass the result to the physical layer, and the physical layer could process the result for transmission on the shared wireless channel, and engage in physical wireless-channel transmission to the to the second device. At the second device, the physical layer could then receive and process the physical transmission, the data-link layer could strip the added link-layer header, and the network layer could strip the added network-layer header and provide the underlying data message to the transport layer for handling.
Numerous other examples of inter-device communication using their protocol stacks are possible as well. Further, it should be understood that variations from the examples above are possible. For instance, the layers noted above could carry out operations in addition to or instead of those noted, and other layers could be implemented in addition to or instead of those noted.
When a device is going to transmit data to another device via a shared wireless channel (i.e., a channel that could be used by others as well), the transmitting device may further implement at a lower layer of its protocol stack, such as at a data-link layer (e.g., a MAC layer) or other lower layer, a process to check for and confirm availability of the channel as a condition for engaging in the transmission. To check for and confirm availability of the channel, for instance, the data-link layer could apply a carrier sense multiple access with collision avoidance (CSMA/CA) process, in which the transmitting device listens to the channel (e.g., monitors energy level on the channel) for a certain time interval to determine whether another device is transmitting on the channel, and the data-link layer concludes that the channel is available only if the transmitting device thus detects an absence of any such other transmission on the channel.
In addition, as part of the checking for and confirming availability of the channel, the data-link layer could engage in control signaling with a corresponding data-link layer of the receiving device to help ensure that the channel will be available for use by both the transmitting device and the receiving device for an expected duration for the transmission (including a duration of the transmission and a duration of an acknowledgment, and a duration of one or more associated interframe intervals). For instance, after determining that the channel is idle, the data-link layer of the transmitting device could send to the data-link layer of the receiving device a Ready-to-Send (RTS) signal that indicates the expected duration, and if the data-link layer of the receiving device receives that RTS signal, the data-link layer of the receiving device could then respond with a Clear-to-Send (CTS) signal that also indicates the expected duration or a variation of that duration. The data-link layer of the transmitting device could thus conclude that the channel will be available only if the link layer of the transmitting device receives the CTS signal from the receiving device.
This added RTS/CTS control signaling also has an added benefit of possibly helping to prevent neighboring devices from transmitting on the channel during the indicated duration, thus additionally confirming that the channel will be available for use for the intended transmission. In particular, if a neighboring device in range of the transmitting device is checking to see if the channel is available and detects the RTS signal, the neighboring device could responsively set itself to avoid use of the channel for the duration indicated in the RTS signal. Likewise, if a neighboring device in range of the receiving device is checking to see if the channel is available and detects the CTS signal, the neighboring node could responsively set itself to avoid use of the channel for the duration indicated in the CTS signal.